Wireless gaming protocol

ABSTRACT

Example apparatus and methods concern establishing, maintaining, managing, or terminating communications between an access point and a client in a wireless network used by a shared, wireless gaming system. An example apparatus may include a first logic configured to control timing for the protocol and a second logic configured to control message exchange for the protocol. Controlling timing and message exchange facilitates reducing contention in the wireless gaming environment. Contention may lead to latency. A user gaming experience may depend on reducing latency. Therefore, reducing latency may produce an improved gaming experience. Controlling timing and message exchange also facilitates reducing power consumption by clients (e.g., accessories, controllers), which in turn facilitates improving battery life for clients.

BACKGROUND

Gamers hate to wait, especially when facing their imminent virtualdemise. When gamers press a button they want an action to occur as soonas possible, with no noticeable delays. Any perceived delays in theactions of the user's avatar are considered unacceptable. Any noticeabledelay may be despised, and may be cause for selecting a different gamingsystem. Gamers also dislike changing the batteries in their handheldcontrollers. Few experiences are worse for the gamer than being on thecusp of a major victory only to have their controller battery die. Bothlatency and battery life can be functions of the amount of time andpower involved in handling contention and collisions on a communicationslink between a console and a game controller.

In a conventional wired gaming system, a console may communicate with anaccessory (e.g., handheld controller) using a carrier sense media accessprotocol that includes collision detection (CSMA/CD). The console may beable to exercise some central authority over the accessories to reduceor minimize collisions and thus to reduce or minimize latency between abutton press and a corresponding action in a game. However, in aconventional wireless gaming system, the console may communicate withthe accessory using a CSMA protocol with collision avoidance (CSMA/CA)instead of CSMA/CD. Communications may require contending for theopportunity to communicate. The contending may increase latency and mayproduce collisions. The contending may also increase the number oftransmissions performed by an accessory, which may negatively affectbattery life.

The amount of time and power spent contending for a communication mediummay be directly related to the number of devices contending for themedium, or the number, type, or size of messages involved in contendingfor the medium. Latency and battery life may also be a function of whathappens (e.g., handshaking, message passing) after an accessory has wona contention. The number, type, or size of messages involved incommunications between the console and the accessory will affect theamount of time that elapses between a user action (e.g., button press,controller re-orientation) and a corresponding game action. The number,type, or size of messages involved in communications between the consoleand the accessory will also affect how much battery power is used percommunication.

SUMMARY

This Summary is provided to introduce, in a simplified form, a selectionof concepts that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

In a wireless gaming system, the amount of latency experienced and theamount of power consumed may be both functions of contention andcollisions. Latency concerns the amount of time an accessory (e.g.,controller, client) waits for a response from a controller (e.g.,console, access point). Power consumed concerns battery usage in anaccessory. Contention and collisions may both be functions of the numberof communicating devices, the protocol used for communications, and thenumber, type, or length of messages used to communicate. Contention andcollisions may impact responsiveness, yet responsiveness and reliabilitymay define the gaming experience for a user. Example apparatus andmethods therefore concern reducing latency by addressing contention andcollisions in a wireless gaming system.

Contention and collisions, and thus latency, may be directly related tonetwork utilization. Example methods and apparatus may, therefore,acquire and distribute network utilization information. The networkutilization information can be used to control, for example, networkselection, channel selection, and other actions. The network utilizationinformation may be used to facilitate having independent gaming systemspeacefully co-exist in close proximity to each other without causingdegraded performance. The network utilization information may also beused by a console. For example, the console may use the networkutilization information to determine whether or how to prioritizeaccessories.

Example methods and apparatus concern establishing, maintaining,managing, or terminating a wireless connection between a radio in agaming console and a radio in a gaming accessory. The accessory may be,for example, a handheld controller. The radio in the gaming console maycommunicate with radios in various accessories. The radio in theaccessory may communicate with the radio in the console. Example methodsand apparatus may establish, maintain, manage, or terminate theconnection between the radios in accordance with a protocol. Theprotocol may define specific messages used in the protocol, includingpacket structures, packet definitions, or packet field definitions. Theprotocol may also define the sequences by which messages are exchanged.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings illustrate various example apparatus, methods,and other embodiments described herein. It will be appreciated that theillustrated element boundaries (e.g., boxes, groups of boxes, or othershapes) in the figures represent one example of the boundaries. In someexamples, one element may be designed as multiple elements or multipleelements may be designed as one element. In some examples, an elementshown as an internal component of another element may be implemented asan external component and vice versa. Furthermore, elements may not bedrawn to scale.

FIG. 1 illustrates an example wireless gaming environment.

FIG. 2 illustrates an example method associated with a wireless gamingprotocol.

FIG. 3 illustrates an example method associated with a wireless gamingprotocol.

FIG. 4 illustrates an example wireless gaming environment.

FIG. 5 illustrates an example apparatus configured to participate in awireless gaming protocol.

FIG. 6 illustrates an example apparatus configured to participate in awireless gaming protocol.

FIG. 7 illustrates an example cloud operating environment.

FIG. 8 is a system diagram depicting an exemplary mobile communicationdevice configured to participate in a wireless gaming protocol.

FIG. 9 illustrates an example enrollment message sequence associatedwith a shared, wireless gaming protocol.

FIG. 10 illustrates an example service discovery message sequenceassociated with a shared, wireless gaming protocol.

FIG. 11 illustrates an example service re-discovery message sequenceassociated with a shared, wireless gaming protocol.

FIG. 12 illustrates an example device termination message sequenceassociated with a shared, wireless gaming protocol.

FIG. 13 illustrates an example console termination message sequenceassociated with a shared, wireless gaming protocol.

FIG. 14 illustrates an example channel change message sequenceassociated with a shared, wireless gaming protocol.

FIG. 15 illustrates an example encryption message sequence associatedwith a shared, wireless gaming protocol.

FIG. 16 illustrates an example message sequence associated with updatingsession keys in a shared, wireless gaming protocol.

FIG. 17 illustrates timing associated with the de-synchronization ofaccessories through the creation of non-overlapping slots createdthrough distributed TDMA.

FIG. 18 illustrates message traffic associated with a single trigger.

FIG. 19 illustrates message traffic associated with a trigger associatedwith a burst.

FIG. 20 illustrates data as acknowledgement (DACK) where a data packetis sent within the PIFS of an acknowledgement (ACK).

FIG. 21 illustrates DACK with data separated from the ACK by the accesspoint (AP) turnaround delay time.

FIG. 22 illustrates a gap in an exchange between a client and an AP.

FIG. 23 illustrates adjustable frame timing associated with an exchangebetween a client and an AP in a shared, wireless gaming environment.

FIG. 24 illustrates changing frame timing associated with an exchangebetween a client and an AP in a shared, wireless gaming environment.

DETAILED DESCRIPTION

In a wireless gaming system, the amount of latency experienced and theamount of power consumed may be both functions of contention andcollisions. Latency concerns the amount of time an accessory (e.g.,controller, client) waits for a response from a controller (e.g.,console, AP). Power consumed concerns battery usage in an accessory.Contention and collisions may both be functions of the number ofcommunicating devices, the protocol used for communications, and thenumber, type, or length of messages used to communicate. Collisions maybe a function of the number, type, or length of messages used tocommunicate. In computer networking, and herein, an access point (AP),or a wireless access point (WAP), is a device that allows wirelessdevices to communicate in a wireless network using, for example Wi-Fi.An AP may in turn connect, for example, to a router and provide accessto wired networks, to the Internet, or to other networks. In computernetworking, and herein, a client is a device that communicates in thewireless network using the AP.

FIG. 1 illustrates a wireless gaming environment in which a console 110functions as an access point (AP) for a wireless network. The gamingenvironment includes an accessory 120 that functions as a client in thewireless network. The gaming environment also includes an accessory 130that functions as a client in the wireless network. Accessory 120 andaccessory 130 communicate in the wireless network using AP 110. In oneembodiment, accessory 120 and accessory 130 do not communicate with eachother. While two accessories are illustrated, a greater or lesser numberof accessories may be present in a wireless gaming environment. Thus,the wireless gaming environment may include a varying number ofsimultaneously attached devices that can be added or removed duringoperation. While a console 110 and accessory 120 are illustrated,similar AP/client scenarios may exist for other apparatus including, butnot limited to, televisions and accessories, personal computers,laptops, tablets, phones, or other devices. Additionally, in someexamples, a computer, laptop, tablet or phone may function as a gameconsole or may function as a controller. Thus, although exampleapparatus and methods are described herein in the context of a gameconsole and accessory, the example apparatus and methods may apply moregenerally to an AP/client environment.

In one embodiment, accessory 120 has one radio that is configured tocommunicate with the console 110. In one embodiment, the console 110 mayhave two radios: one configured to communicate with the accessory 110 orother accessories, and one configured to communicate with othernetworks. The radio in accessory 120 may be configured to quickly find aspecific console with which it wants to connect. The radios may beconfigured to selectively operate on different frequency bands atdifferent modulation rates with different encryption using dynamicfrequency selection.

In different embodiments, the accessory 120 may be, for example, asimple game controller used just for gameplay, a controller with a chatfunctionality, a controller with a stereo functionality, a controllerwith a display, a chat only device, a stereo only device, speakers, aremote control, or other device.

In one embodiment, contention can be reduced by reducing the likelihoodthat two or more devices will try to use the communication medium at thesame time. The likelihood may be reduced through de-synchronizationproduced through distributed time division media access (TDMA). In oneembodiment, the TDMA may include controlling clients to determine whenthey should sleep and when they should wake up so that clients thatmight contend for the same medium may wake up and sleep at differenttimes and thereby become desynchronized. This approach may rely on thefact that in a CSMA/CA approach, there may only be a single frame in thenetwork at a time. Clients are configured to sense when the media isbeing used and to avoid collisions. The carrier sensing, contentionwinning, and single frame approach facilitate de-synchronizingaccessories through distributed TDMA. In one example, TDMA may becentralized and controlled by an AP. In another example, the TDMA may bedistributed or decentralized with the clients being responsible fordetermining their time slots.

In one embodiment, after a client has won a contention, and after theclient has recognized a successful completion of its communication withthe console, the client may schedule its own sleep time and subsequentwakeup time. The successful completion may be associated with, forexample, receiving an acknowledgement (ACK) message from the AP. Sinceonly one client will win a contention at a time, and thus since onlythat client will see its successful ACK, that client may schedule aunique time to wake up, which may in turn reduce the likelihood thatanother client will be seeking to acquire the medium at the same timethat the client wakes up. After a period of operation, clients maybecome desynchronized to the point where contention is reduced.De-synchronization may be enhanced by selectively controlling clients tohave different properties (e.g., sleep times, back-off times, back-offinterval progression). For example, a client may initially be configuredto sleep at a time T for a duration of delta Δ. The Δ may be, forexample, a multiple of 4 ms. Over time, to enhance de-synchronization, aclient may have its Δ changed to, for example, multiples of 8 ms. Thedistributed TDMA includes the clients scheduling their own sleep/wakeuptimes rather than having sleep/wakeup controlled by the AP or othercentral controlling agent. Rather than adhering to centrally determinedand inflexible slots, the clients determine their own slots. The clientdetermined slots may, over time, desynchronize to the point where thereis less overlap between slots. Reducing overlap reduces the likelihoodthat accessories will contend for the medium and thus reduces latencyand power consumption.

In one embodiment, collisions can be reduced by reducing the number ofmessages passed between the AP and a client. Rather than passingseparate pieces of information in individual communications (e.g.,frames, packets, messages), each of which requires winning a contentionand performing a handshake, example methods and apparatus may passmultiple pieces of information in a set of contiguous or uninterruptedcommunications, where the entire set may be passed after a singlecontention and handshake. For example, when a client wins a contention,the AP may send multiple packets to the client rather than sending justa single packet. In one embodiment, the AP may send all the packets thatare pending for a client that are scheduled for delivery within adefined time period. In one embodiment, the AP may even send all packetsthat are pending for a client to the client during the singlecommunication period after the client wins the contention. Additionally,the client may send multiple packets to the AP rather than sending justa single packet. In one embodiment, the client may even send all packetsthat are pending for the AP to the AP during the single communicationperiod after the client wins the contention. Draining the AP or clientby sending multiple packets may reduce the number of times the clientneeds to contend for the medium thereby reducing contention.

In one embodiment, collisions can be reduced and power consumption canbe reduced by reducing the number of handshaking messages passed betweenthe AP and a client after a contention has been won. A conventionalapproach may involve a four message “two way” handshake. Example methodsand apparatus may engage in a three message “one-and-a-half-way”handshake where, for example, data can serve as both data and as ahandshaking acknowledgement. In one embodiment, data may serve as anACK. In another embodiment, data may be coupled to an ACK and sent afterthe ACK without a conventional contention delay or additional round ofmessage exchanges, or with a smaller contention delay.

Once a client has won a contention, the client may be allocated areserved period of time for communicating with the AP. This may allowthe AP enough time to access information for the client, to prepare theinformation for communication to the client, and then to send theinformation to the client during the reserved period of time rather thanforcing the AP to engage in and win another contention. This timeconsumed by the AP may be referred to as “turnaround delay”. In oneembodiment, the reserved period of time may be controlled using thenetwork allocation vector (NAV) function of a wireless protocol (e.g.,802.11). The NAV function facilitates a client reserving a shared mediumfor a period of time that exceeds the console turnaround time. Byreserving a period of time, only the trigger packet may be forced tocontend for the medium, subsequent packets or frames in the exchange maynot need to contend.

Recall that carrier sense includes two separate functions. NAV isvirtual carrier sense that is used to reserve the medium. Clear channelassessment (CCA) is a physical carrier sense that listens to energyreceived on the radio interface. CCA indicates a busy medium. NAVreserves the medium as busy.

In one embodiment, contention and collisions may also be reduced by morewisely selecting the network or communication channel over which aclient and AP will communicate. For example, two communication channelsmay be available for a communication. A first communication channel maybe experiencing a first (e.g., higher) level of traffic while a secondcommunication channel may be experiencing a second (e.g., lower) levelof traffic. Rather than blindly connecting to the first availablechannel, example methods and apparatus may analyze network or channelinformation to determine an appropriate channel to use forcommunication. In one embodiment, methods and apparatus may monitorchannel utilization and provide channel utilization information in, forexample, a beacon message associated with a wireless protocol. By way ofillustration, a wireless protocol may involve an AP periodically sendinga broadcast message (e.g., beacon). In one embodiment, channelutilization information may be provided in the broadcast message andclients may select a communication channel based, at least in part, onthe channel utilization information.

Utilization concerns how busy a network is. Utilization may be measured,for example, based on the amount of air time being consumed by traffic.Air time consumption can be measured, for example, by the AP, or byindividual clients. In one embodiment, the AP may track air time usageand report that air time usage in the beacon message. In anotherembodiment, the individual clients may monitor air time usage andprovide this usage information to the AP. The AP may then aggregateclient information and provide the aggregate information or informationderived from the aggregate information in the beacon message.

In one embodiment, a radio in an accessory may measure the average timefrom the beginning of a trigger packet of a burst from a connecteddevice to the end of the last ACK packet at the end of the burst. Theaverage time may be computed from a plurality of burst transactionmeasurements. The average may be normalized by the burst duty cycletime. In one embodiment, the utilization may be measured independentlyfor connected accessories. In one embodiment, the average utilizationfrom different accessories may be combined to produce the overallchannel utilization metric.

The capacity or utilization information may be provided in a beaconpacket. In one embodiment, the beacon packet may be transmittedperiodically (e.g., once every 100 ms). In one embodiment, a consoleradio may issue a message (e.g., probe request) to query another consoleto provide its capacity or utilization data. The capacity or utilizationdata may be returned, for example, in a probe response.

In a shared wireless gaming environment, there may be multiple APs(e.g., consoles) and multiple clients (e.g., game controllers,accessories). Consider a college dormitory where a hundred students mayhave their own gaming consoles and may be participating in a massivelyonline game. Players may come and go throughout a period of time.Example methods and apparatus may selectively connect clients todifferent channels or networks based, at least in part, on the air timeusage reported in the beacon messages. While air time usage isdescribed, the beacon message or other broadcast message may containinformation or statistics derived from air time usage or other networkutilization measurements.

In one embodiment, battery life may be extended by selectivelycontrolling how frequently a client communicates with an AP. Recall thatclients may initiate communications with the AP. The client mayinterrogate the AP to determine whether the AP has any messages to sendto the client. Conventionally, the clients may have initiatedcommunications at a fixed interval, even if the client had nothing tocommunicate and even if the client had intelligence that it was likelythat the AP would have nothing to send to the client. In one embodiment,methods and apparatus may control a client to selectively reduce howfrequently the client initiates communications with the AP. For example,when a client doesn't have any data for the AP, or when a client doesn'thave any data and is unlikely to have any data for the AP, then theclient may reduce how often it initiates communications with the AP.Similarly, when a client knows that it is unlikely that the AP will haveany data for the client, then the client may reduce how often itinterrogates the AP for data. For example, a client may switch fromsending an initiation message once every 40 ms to once every 80 ms thenonce every 160 ms and for even longer periods of time. Differentintervals and different changes in intervals may be employed.

Some portions of the detailed descriptions that follow are presented interms of algorithms and symbolic representations of operations on databits within a memory. These algorithmic descriptions and representationsare used by those skilled in the art to convey the substance of theirwork to others. An algorithm is considered to be a sequence ofoperations that produce a result. The operations may include creatingand manipulating physical quantities that may take the form ofelectronic values. Creating or manipulating a physical quantity in theform of an electronic value produces a concrete, tangible, useful,real-world result.

It has proven convenient at times, principally for reasons of commonusage, to refer to these signals as bits, values, elements, symbols,characters, terms, numbers, and other terms. It should be borne in mind,however, that these and similar terms are to be associated with theappropriate physical quantities and are merely convenient labels appliedto these quantities. Unless specifically stated otherwise, it isappreciated that throughout the description, terms including processing,computing, and determining, refer to actions and processes of a computersystem, logic, processor, system-on-a-chip (SoC), or similar electronicdevice that manipulates and transforms data represented as physicalquantities (e.g., electronic values).

Example methods may be better appreciated with reference to flowdiagrams. For simplicity, the illustrated methodologies are shown anddescribed as a series of blocks. However, the methodologies may not belimited by the order of the blocks because, in some embodiments, theblocks may occur in different orders than shown and described. Moreover,fewer than all the illustrated blocks may be required to implement anexample methodology. Blocks may be combined or separated into multiplecomponents. Furthermore, additional or alternative methodologies canemploy additional, not illustrated blocks.

FIG. 2 illustrates an example method 200 associated with a wirelessgaming protocol. In different examples, method 200 may be performed on asingle device, may be performed partially or completely in the cloud,may be performed on distributed co-operating devices, or may beperformed other ways. In different examples, method 200 may be performedon devices including, but not limited to, a computer, a laptop computer,a tablet computer, a phone, a smart phone, a game console, or a gameaccessory.

Method 200 includes, at 210 collecting network utilization dataassociated with a wireless network employed in the wireless gamingenvironment. In the wireless network a gaming console may function as anAP and a gaming accessory (e.g., controller, paddle) may function as aclient. Once the network utilization data has been collected, method 200may selectively control various actions as a function of the networkutilization data. For example, method 200 may control a communicationpriority for the client, a network selection by the client, a channelselection by the client, a sleep time for the client, or a wakeup timefor the client. Additional or alternative actions may be controlled as afunction of the network utilization data.

In different embodiments, the network utilization data may be collectedat the AP or may be collected at the client(s) and provided by theclient(s) to the AP. Once the network utilization data has beencollected, method 200 may include computing network utilizationinformation from the network utilization data. In one embodiment, thenetwork utilization information may be computed as a function of theamount of air time used by the AP or the amount of air time used by theclient.

In one embodiment, method 200 may include controlling the AP to providethe network utilization data to other nodes or entities in the wirelessnetwork. For example, the AP may transmit a beacon message that providesthe network utilization data or the network utilization information.

Method 200 also includes, at 220, controlling how communications areinitiated between the client and the AP. In one embodiment,communications between the client and the AP may only be initiated bythe client. In one embodiment, the client may initiate a communicationwith the AP by sending a trigger packet. The trigger packet may be, forexample, a single trigger or a trigger associated with a burst.Conditions may change over time, therefore, in one embodiment method 200may include selectively controlling the client to modify how often theclient will send trigger packets to the AP. For example, the client maysend trigger packets more frequently when more busy and less frequentlywhen less busy.

Method 200 also includes, at 230, controlling the client to determine aslot time according to a distributed time division media access (TDMA)approach. A slot time refers to a period of time during which a clientwill be awake and may attempt to acquire the medium in the wirelessnetwork. In one embodiment, method 200 relies on a distributed TDMAapproach where the client determines a next slot time for the client asa function of the completion time of a successful transmission from theclient to the AP. In another embodiment, method 200 relies on adistributed TDMA approach where the client determines a next slot timefor the client as a function of an access identifier associated with theclient. Slot times may be computed in different ways at different times.For example, method 200 may have clients compute slot times using afirst approach at a first time and then using a second approach at asecond time. Conventionally, media access control associated with slottimes may have eliminated the need for contention. However, in a dynamicwireless gaming environment, where accessories may be added and removed,and where slot times are being computed at the accessories, acombination of slot times and trigger packet contention may be employed.

Method 200 also includes, at 240, controlling exchanges between theclient and the AP to employ packet aggregation. Packet aggregation mayinvolve sending more than a single message or frame at a time from theclient to the AP or from the AP to the client. In one embodiment,aggregation may result in the AP providing two or more downstreampackets that are ready to send to the client in response to a singletrigger packet from the client. The downstream packets will be sent aspart of a single exchange between the AP and the client after acontention win by the client. Only the trigger packet may have tocontend for the channel. In one embodiment, aggregation may result inthe client providing two or more upstream packets that are ready to sendto the AP in response to receiving a downstream packet from the AP. Onceagain, the upstream packets will be sent as part of a single exchangebetween the AP and the client after the contention win by the client.

In one embodiment, either an AP or a client may have multiple framequeues available for queuing frames to be transmitted. Thus, in oneembodiment, the two or more downstream packets are provided from one ofa plurality of frame queues in the AP. When multiple frame queues areavailable, example apparatus and methods may pick the packet(s) havingthe earliest deadline across the queues. Members of the plurality offrame queues may have different communication timing parameters. Havingdifferent communication parameters may facilitate providing thedownstream packets as quickly as possible given the current operatingconditions on the wireless network.

Aggregation may also involve controlling the AP to provide a data frameas an acknowledgement to a trigger packet. This facilitates reducing thenumber of messages exchanged. Aggregation may also involve controllingthe AP to provide a data frame within a threshold time of providing anacknowledgement to a trigger packet. The threshold time may be selectedto prevent a second client from winning a contention in the wirelessnetwork.

While discussing aggregation, different types of packets have beenintroduced. For example, trigger packets, ACK, and data packets havebeen introduced. In one embodiment, a wireless gaming protocol maysupport different types of data that are characterized by, for example,bandwidth requirements, latency requirements, reliability requirements,and other parameters. For example, a wireless gaming protocol may definecontroller data, command data, audio data, media data, or other types ofdata. Controller data may be used, for example, to send stateinformation from the client to the AP and to send game information fromthe AP to the client. Command data may be used to send control andmanagement information to or from the client. Audio data may bebi-directional and media data may be upstream or downstream data.

Method 200 also includes, at 250, controlling the client to manipulatemedia access control for the wireless network using a network allocationvector (NAV). In one embodiment, the NAV may be configured as a functionof a turnaround delay associated with the AP. In one embodiment, theclient may manipulate media access control by setting the NAV to a valuethat exceeds the AP turnaround delay. Since the longer NAV may produce acondition where a recently awaked client may have missed the NAV, method200 may also include controlling the client, upon waking up, to sensethe medium employed in the wireless network for a period of timeexceeding the turnaround delay before beginning a contention.

FIG. 3 illustrates an example method 300 associated with a wirelessgaming protocol. Method 300 is configured to reduce latency in awireless network used by a shared, wireless gaming system. The wirelessnetwork may include an AP (e.g., console) and a client (e.g.,accessory). Method 300 includes, at 310, selecting a channel to be usedby the client to access the wireless network. Which channel is selectedmay be based, at least in part, on channel utilization data collectedfrom nodes in the wireless network and made available by the AP.

Method 300 also includes, at 320, computing a first slot time for theclient according to a distributed time division media access (TDMA)protocol. With the first slot time computed, the client is now ready tocontend for the medium associated with the selected channel when thefirst slot time arrives. Upon determining that the first slot time isactive, method 300 includes, at 330, having the client engage in acontention to acquire the channel. A trigger packet may then contend forthe channel. In one embodiment, if the trigger packet is contending forthe channel and does not gain access within, for example, one-half ofthe frame time (e.g., 4 ms), the trigger packet will be abandoned.

Upon determining that the contention has been completed successfully,the client may then be ready to reserve the channel and to communicate.Therefore, method 300 proceeds, at 340, to manipulate a networkallocation vector (NAV) to reserve the channel for a period of timesufficient to support an uninterrupted bi-directional exchange betweenthe client and the AP. With the channel reserved, method 300 thenproceeds, at 350, to initiate the bi-directional exchange from theclient to the AP. The exchange may be initiated by providing a triggerpacket from the client to the AP. The bi-directional exchange mayinclude receiving zero or more downstream packets into the client fromthe AP and providing zero or more upstream packets from the client tothe AP.

Once the bi-directional exchange has been successfully completed, andonce the client has determined that the bi-directional exchange has beensuccessful, the client may then, at 360, compute a next slot time forthe client. In one embodiment, the start of the next slot time may bebased, at least in part, on when the packet is first successful atgaining the media to transmit. The client may then go to sleep until thenext slot period.

Conditions in the wireless network or in the wireless networkingenvironment may change over time. Therefore method 300 may include, at370, selectively reconfiguring a TDMA parameter based, at least in part,on the channel utilization data. The TDMA parameter may be associatedwith, for example, timing, message sequencing, or other protocol relatedmatters.

While FIGS. 2 and 3 illustrates various actions occurring in serial, itis to be appreciated that various actions illustrated in FIGS. 2 and 3could occur substantially in parallel. By way of illustration, a firstprocess could handle network utilization processing, a second processcould handle message exchanges, a third process could compute slot timesaccording to the distributed TDMA, and a fourth process could updateprotocol parameters. While four processes are described, it is to beappreciated that a greater or lesser number of processes could beemployed and that lightweight processes, regular processes, threads, andother approaches could be employed.

In one example, a method may be implemented as computer executableinstructions. Thus, in one example, a computer-readable storage mediummay store computer executable instructions that if executed by a machine(e.g., computer) cause the machine to perform methods described orclaimed herein including methods 200 or 300. While executableinstructions associated with the above methods are described as beingstored on a computer-readable storage medium, it is to be appreciatedthat executable instructions associated with other example methodsdescribed or claimed herein may also be stored on a computer-readablestorage medium. In different embodiments, the example methods describedherein may be triggered in different ways. In one embodiment, a methodmay be triggered manually by a user. In another example, a method may betriggered automatically.

“Computer-readable storage medium”, as used herein, refers to a mediumthat stores instructions or data. “Computer-readable storage medium”does not refer to propagated signals, per se. A computer-readablestorage medium may take forms, including, but not limited to,non-volatile media, and volatile media. Non-volatile media may include,for example, optical disks, magnetic disks, tapes, flash memory, ROM,and other media. Volatile media may include, for example, semiconductormemories, dynamic memory (e.g., dynamic random access memory (DRAM),synchronous dynamic random access memory (SDRAM), double data ratesynchronous dynamic random-access memory (DDR SDRAM), etc.), and othermedia. Common forms of a computer-readable storage medium may include,but are not limited to, a floppy disk, a flexible disk, a hard disk, amagnetic tape, other magnetic medium, an application specific integratedcircuit (ASIC), a compact disk (CD), other optical medium, a randomaccess memory (RAM), a read only memory (ROM), a memory chip or card, amemory stick, and other media from which a computer, a processor orother electronic device can read.

FIG. 4 illustrates an example wireless gaming environment where a newaccessory 470 is seeking to join a wireless network. There are twowireless networks available. A first network includes a console 410functioning as an AP for a wireless network. Console 410 may be an APfor an accessory 420 that is functioning as a client and for anaccessory 430 that is also functioning as a client. A second networkincludes a console 440 functioning as an AP in another wireless network.Console 440 may function as an AP for an accessory 450 that isfunctioning as a client and for an accessory 460 that is alsofunctioning as a client. There may be different amounts of air timebeing used on the two different networks. The gaming experience of auser of accessory 470 may be profoundly influenced by which network isjoined.

FIG. 5 illustrates an apparatus 500 that includes a processor 510, amemory 520, a set 530 of logics, and an interface 540 that connects theprocessor 510, the memory 520, and the set 530 of logics. The set 530 oflogics may be configured to implement timing and messaging associatedwith a wireless gaming protocol used by clients in a wireless networkthat participate in distributed time division media access (DTDMA).Apparatus 500 may be, for example, a computer, a laptop computer, atablet computer, a personal electronic device, a smart phone, asystem-on-a-chip (SoC), a game console, a game accessory, or otherdevice that can access and process data.

In one embodiment, the apparatus 500 may be a general purpose computerthat has been transformed into a special purpose computer through theinclusion of the set 530 of logics. Apparatus 500 may interact withother apparatus, processes, and services through, for example, awireless network. Apparatus 500 may interact with the other apparatus ina shared, wireless gaming environment.

The set 530 of logics may include a first logic 532 that is configuredto control timing for the wireless gaming protocol. In one embodiment,the first logic 532 may be configured to control timing by provisioninga network allocation vector (NAV) to reserve an access medium associatedwith the wireless network for a period of time sufficient to allow abi-directional message exchange between the AP and the client over themedium. The bi-directional message exchange may include two or moreaggregated upstream frames from the client to the AP or two or moreaggregated downstream frames from the AP to the client. Thebi-directional message exchange may be performed after a singlecontention win by the client.

In one embodiment, the first logic 532 may also be configured to controltiming by controlling the client to schedule a next slot time for theclient. The next slot time may be selected based, at least in part, ondetecting a successful completion of a current message exchange during acurrent slot time employed by the client.

The set 530 of logics may also include a second logic 534 that isconfigured to control message exchange for the wireless gaming protocol.The second logic 534 may operate by restricting message exchangeinitiation to the client. This means that the clients can initiateexchanges with the console and that the console will not initiateexchanges with accessories. In one embodiment, the second logic 534 maybe configured to control message exchange by controlling triggermessages and the responses to trigger messages. In one embodiment, thesecond logic 534 may control the client to generate, periodically, aclient initiated trigger message. The AP may accept the client initiatedtrigger message and provide a downstream message available in the AP tothe client in response to the client initiated trigger message. Thesecond logic 534 may then control the client to provide an upstreammessage available in the client to the AP in response to receiving thedownstream message.

In one embodiment, the second logic 534 may be configured to controlmessage exchange by controlling how the AP acknowledges a trigger ordata from the client. In one embodiment, the AP may provide a data frameconfigured to perform an acknowledgement function. In anotherembodiment, the AP may provide a data frame within a threshold amount oftime of providing an acknowledgement frame. In either embodiment, themessage exchange will remove one step from a conventional messageexchange.

In different embodiments, some processing may be performed on theapparatus 500 and some processing may be performed by an externalservice or apparatus. Thus, in one embodiment, apparatus 500 may alsoinclude a communication circuit that is configured to communicate withan external source to facilitate controlling timing and messageexchange. In one embodiment, the first logic 532 or the second logic 534may interact with a presentation service 560 to facilitate displayingdata using different presentations for different devices.

FIG. 6 illustrates an apparatus 600 that is similar to apparatus 500(FIG. 5). For example, apparatus 600 includes a processor 610, a memory620, a set of logics 630 (e.g., 632, 634) that correspond to the set oflogics 530 (FIG. 5) and an interface 640. However, apparatus 600includes an additional third logic 636. The third logic 636 may beconfigured to monitor and report on air time usage. For example, thethird logic 636 may be configured to acquire air time data from the APor the client and then to compute medium utilization data from the airtime data. Once the air time data is acquired and the medium utilizationdata is computed, the third logic 636 may control access to the wirelessnetwork based on the medium utilization information. Similarly, thethird logic 636 may control a priority of the client on the wirelessnetwork based on the medium utilization information.

Air time data and network utilization data may provide information abouttraffic on a network. Decisions may then be made based on the degree towhich the network is busy. Therefore, third logic 636 may also beconfigured to manipulate a timing parameter in the wireless gamingprotocol or a message exchange parameter in the wireless gaming protocolbased, at least in part, on the medium utilization data.

FIG. 7 illustrates an example cloud operating environment 700. A cloudoperating environment 700 supports delivering computing, processing,storage, data management, applications, and other functionality as anabstract service rather than as a standalone product. Services may beprovided by virtual servers that may be implemented as one or moreprocesses on one or more computing devices. In some embodiments,processes may migrate between servers without disrupting the cloudservice. In the cloud, shared resources (e.g., computing, storage) maybe provided to computers including servers, clients, and mobile devicesover a network. Different networks (e.g., Ethernet, Wi-Fi, 802.x,cellular) may be used to access cloud services. Users interacting withthe cloud may not need to know the particulars (e.g., location, name,server, database) of a device that is actually providing the service(e.g., computing, storage). Users may access cloud services via, forexample, a web browser, a thin client, a mobile application, or in otherways.

FIG. 7 illustrates an example wireless gaming protocol service 760residing in the cloud. The wireless gaming protocol service 760 may relyon a server 702 or service 704 to perform processing and may rely on adata store 706 or database 708 to store data. While a single server 702,a single service 704, a single data store 706, and a single database 708are illustrated, multiple instances of servers, services, data stores,and databases may reside in the cloud and may, therefore, be used by thewireless gaming protocol service 760.

FIG. 7 illustrates various devices accessing the wireless gamingprotocol service 760 in the cloud. The devices include a computer 710, atablet 720, a laptop computer 730, a personal digital assistant 740, amobile device (e.g., cellular phone, satellite phone, wearable computingdevice) 750, a game console 752, and a game accessory 754. The wirelessgaming protocol service 760 may monitor and report on networkutilization, may manipulate parameters in the wireless gaming protocol,or may perform other actions.

It is possible that different users at different locations usingdifferent devices may access the wireless gaming protocol service 760through different networks or interfaces. In one example, the wirelessgaming protocol service 760 may be accessed by a mobile device 750. Inanother example, portions of wireless gaming protocol service 760 mayreside on a mobile device 750. Mobile device 750 may be used, forexample, as a game console or as a game accessory. As a game console,mobile device 750 may be an AP in a wireless network. As a gameaccessory (e.g., handheld controller), mobile device 750 may be a clientin a wireless network.

FIG. 8 is a system diagram depicting an exemplary mobile device 800 thatincludes a variety of optional hardware and software components, showngenerally at 802. Components 802 in the mobile device 800 cancommunicate with other components, although not all connections areshown for ease of illustration. The mobile device 800 may be a varietyof computing devices (e.g., cell phone, smartphone, handheld computer,Personal Digital Assistant (PDA), wearable computing device, gameconsole, game accessory, etc.) and may allow wireless two-waycommunications with one or more mobile communications networks 804, suchas cellular or satellite networks. The mobile device 800 may function asa game console and play the role of an AP or may function as a gameaccessory and play the role of a client.

Mobile device 800 can include a controller or processor 810 (e.g.,signal processor, microprocessor, application specific integratedcircuit (ASIC), or other control and processing logic circuitry) forperforming tasks including signal coding, data processing, input/outputprocessing, power control, or other functions. An operating system 812can control the allocation and usage of the components 802 and supportapplication programs 814. The application programs 814 can includemobile computing applications (e.g., email applications, calendars,contact managers, web browsers, messaging applications, games), or othercomputing applications.

Mobile device 800 can include memory 820. Memory 820 can includenon-removable memory 822 or removable memory 824. The non-removablememory 822 can include random access memory (RAM), read only memory(ROM), flash memory, a hard disk, or other memory storage technologies.The removable memory 824 can include flash memory or a SubscriberIdentity Module (SIM) card, which is well known in GSM communicationsystems, or other memory storage technologies, such as “smart cards.”The memory 820 can be used for storing data or code for running theoperating system 812 and the applications 814. Example data can includeweb pages, text, images, sound files, video data, or other data sets tobe sent to or received from one or more network servers or other devicesvia one or more wired or wireless networks. The memory 820 can be usedto store a subscriber identifier, such as an International MobileSubscriber Identity (IMSI), and an equipment identifier, such as anInternational Mobile Equipment Identifier (IMEI). The identifiers can betransmitted to a network server to identify users or equipment.

The mobile device 800 can support one or more input devices 830including, but not limited to, a touchscreen 832, a microphone 834, acamera 836, a physical keyboard 838, or trackball 840. The mobile device800 may also support output devices 850 including, but not limited to, aspeaker 852 and a display 854. Other possible output devices (not shown)can include piezoelectric or other haptic output devices. Some devicescan serve more than one input/output function. For example, touchscreen832 and display 854 can be combined in a single input/output device. Theinput devices 830 can include a Natural User Interface (NUI). A NUI isan interface technology that enables a user to interact with a device ina “natural” manner, free from artificial constraints imposed by inputdevices such as mice, keyboards, remote controls, and others. Examplesof NUI methods include those relying on speech recognition, touch andstylus recognition, gesture recognition (both on screen and adjacent tothe screen), air gestures, head and eye tracking, voice and speech,vision, touch, gestures, and machine intelligence. Other examples of aNUI include motion gesture detection using accelerometers/gyroscopes,facial recognition, three dimensional (3D) displays, head, eye, and gazetracking, immersive augmented reality and virtual reality systems, allof which provide a more natural interface, as well as technologies forsensing brain activity using electric field sensing electrodes (EEG andrelated methods). Thus, in one specific example, the operating system812 or applications 814 can comprise speech-recognition software as partof a voice user interface that allows a user to operate the device 800via voice commands. Further, the device 800 can include input devicesand software that allow for user interaction via a user's spatialgestures, such as detecting and interpreting gestures to provide inputto a gaming application.

A wireless modem 860 can be coupled to an antenna 891. In some examples,radio frequency (RF) filters are used and the processor 810 need notselect an antenna configuration for a selected frequency band. Thewireless modem 860 can support two-way communications between theprocessor 810 and external devices. The modem 860 is shown genericallyand can include a cellular modem for communicating with the mobilecommunication network 804 and/or other radio-based modems (e.g.,Bluetooth 864 or Wi-Fi 862). The wireless modem 860 may be configuredfor communication with one or more cellular networks, such as a Globalsystem for mobile communications (GSM) network for data and voicecommunications within a single cellular network, between cellularnetworks, or between the mobile device and a public switched telephonenetwork (PSTN). NFC 892 facilitates having near field communications.

The mobile device 800 may include at least one input/output port 880, apower supply 882, a satellite navigation system receiver 884, such as aGlobal Positioning System (GPS) receiver, an accelerometer 886, or aphysical connector 890, which can be a Universal Serial Bus (USB) port,IEEE 1394 (FireWire) port, RS-232 port, or other port. The illustratedcomponents 802 are not required or all-inclusive, as other componentscan be deleted or added.

Mobile device 800 may include a wireless gaming protocol logic 899 thatis configured to provide a functionality for the mobile device 800. Forexample, wireless gaming protocol logic 899 may provide a client forinteracting with a service (e.g., service 760, FIG. 7). Portions of theexample methods described herein may be performed by wireless gamingprotocol logic 899. Similarly, wireless gaming protocol logic 899 mayimplement portions of apparatus described herein.

Example methods and apparatus concern establishing, maintaining,managing, or terminating a wireless connection between a radio in agaming console and a radio in a gaming accessory. The accessory may be,for example, a handheld controller. The radio in the gaming console mayoperate as an AP in a wireless network. The radio in the accessory mayoperate as a client in the wireless network. Example methods andapparatus may establish, maintain, manage, or terminate the connectionin accordance with a protocol. The protocol may define specific messagesused in the protocol, including packet structures, packet definitions,or packet field definitions. The protocol may also define the sequencesby which messages are exchanged.

FIGS. 9-16 illustrate one set of example message exchanges between aclient and an AP. While FIGS. 9-16 illustrate one set of example messageexchanges for a shared, wireless network gaming protocol, messages maybe exchanged in other orders. Additionally, different messages thanthose illustrated may be exchanged.

FIG. 9 illustrates an example enrollment message sequence. Enrollmentinvolves the exchange of information that determines, for example, aconsole identifier, an operating country, regional information, anoperating channel list, a device identifier, or other information.

FIG. 10 illustrates an example service discovery message sequence. FIG.11 illustrates an example service re-discovery message sequence. Service(re)discovery is used to establish an active connection to a console.

FIG. 12 illustrates an example device termination message sequence. FIG.13 illustrates an example console termination message sequence. FIG. 14illustrates an example channel change message sequence. FIG. 15illustrates an example encryption message sequence. FIG. 16 illustratesan example message sequence associated with updating session keys in ashared, wireless gaming environment. The message exchanges may beaffected by different states in which radios may be. For example, aradio may be off, in standby, idle, connected, active, or in otherstates.

FIG. 17 illustrates timing associated with the de-synchronization ofclients through the creation of non-overlapping slot times produced bythe operation of the distributed TDMA. After winning contention, aclient may send a trigger 1710 upstream to the AP. The AP may then sendan ACK 1720. The client will be awake during this time period. Theclient may then go to sleep upon seeing the ACK 1720. The client maywake up again at the start of its next slot time and send trigger 1730.Once again the AP may send an ACK 1740, after which the client may goback to sleep. Trigger 1710 and trigger 1730 were both sent after theclient won a contention, which occurred very quickly after the clientwoke up. Trigger 1750 is also sent after the client wins a contention.However, trigger 1750 is sent after a contention delay that was longerthan that experienced before sending triggers 1710 or 1730. Once againthe AP may send an ACK 1760 after which the client will go to sleepafter scheduling its next slot time. Another trigger 1770 is sent afterthe client wakes up. The AP sends an ACK 1780. The effect of contentionis illustrated in the longer delay before sending trigger 1750. Examplemethods and apparatus seek to reduce contention and thus to reduce thisdelay to provide an improved game experience. Computing slot times usingthe distributed TDMA approach may reduce the number of devicescontending at any given time and thus reduce the effects of contentionoverall. Different embodiments may use different trigger packets. In oneexample, if a client has no trigger packet, the client may send a nullframe. In another example, if the client has multiple packets, theclient may pick the packet having the highest priority (e.g., closestdeadline) and use that highest priority packet as the trigger packet.Other approaches may be employed.

A TDMA scheme involves clients having different slot times that reduceor even minimize overlap. Example methods and apparatus employ adistributed TDMA that allows clients to determine their own slotswithout AP co-ordination. Having clients determine their own slot timesmay involve having clients independently determine their slot starttimes. In one embodiment, clients use the time of successfultransmission of their last frame plus a deadline time as the start timefor their next slot time. In one embodiment, clients may also computethe start time for their next slot time as a function of theirassociation identifier. Using the association identifier may facilitateproducing different starting times for different clients. DistributedTDMA that leads to client-generated start times and non-overlapping slottimes may allow clients to sleep more since the clients may not need tostay awake to receive frames from the AP. Sleeping more may reduce powerconsumption.

In a non-multi-user multi-input multi-output (MU-MIMO) system,distributed TDMA leverages the laws of physics that dictate that onlyone transmission in a shared, wireless gaming environment can be activeat a time. Given this fact, only one client in contention range maysuccessfully transmit at a given instant. The client that transmittedsuccessfully can, therefore, determine a hopefully unique start time fora subsequent, hopefully non-overlapping slot time as a function of thesuccessful transmission time. Since slots may overlap, trigger packetsmay still contend. When clients that are collaborating in thedistributed TDMA compute their next start times based on their ownsuccessful transmission times, de-synchronization can occur, which mayreduce contention by producing unique start times and less overlappingslot times. When a new accessory or client joins the network, anotherperiod of de-synchronization may occur. During this period clients mayonce again contend with each other, but over time the de-synchronizationmay be re-established and contention may be reduced.

In another embodiment, slot times may be determined as a function of theassociation identifier (AID) for a client in the network. For example,the start time for a client could be computed using:Start time=AID/(max(AID for all clients)*slot time)

If the AP does not immediately garbage collect AIDs, then there may bestale AIDs that lead to dead air time. Therefore, in one embodiment,clients may monitor the medium to identify which clients are active andto identify the AIDs associated with the active clients. Monitoring themedium may include, for example, monitoring beacon frames forinformation that identifies clients that have packets buffered at theAP. Given the information in the beacon, a client may determine anactive AID and use that as a rank order among active AIDs. The slot timemay then be computed using:Start time=ACTIVE AID/(max(active AID)*slot time).

Some acronyms used herein include:

ACK: acknowledgement frame

DCF: distributed co-ordination function, a fundamental MAC technique of802.11

DIFS: Distributed interframe space=SIFS+(2*slot time)

MAC: media access control

NAV: network allocation vector

PCF: point co-ordination function

PIFS: Priority interframe space=SIFS+slot time

SIFS: short interframe space, the time between a data frame and an ACK

TDMA: time division media access

In one embodiment, clients may adapt their sleep behavior as a functionof a traffic profile in the network. Adapting the sleep behavior mayfacilitate reducing contention between clients. With their sleepbehavior adapted, clients may engage in atomic bursts of traffic toreduce contention and collisions. In one embodiment, a downlink burstmay be separated from an uplink burst by an amount of time equal toSIFS+ACK. This amount of time seeks to ensure that other clients, evenclients from outside the network, will not disrupt the downlink anduplink sequence of packets for a client.

Recall that clients determine when to send packets to the AP. The firstpacket from a client may be treated as a trigger for the AP to startde-queuing frames to the client. Unlike conventional systems, the APwill not initiate transmissions to the clients but will wait for triggerframes. The AP may still broadcast beacon messages. Clients can usedifferent types of trigger frames. In one embodiment, a client may use asingle packet trigger where the client sends one frame, which is thenfollowed by a downlink burst from the AP and then followed by an uplinkburst from the client. The burst may include multiple frames. In anotherembodiment, a client may use a burst trigger where the client sends anuplink burst before the AP sends a downlink burst.

FIG. 18 illustrates message traffic associated with a single trigger. InFIG. 18, a client wakes up and sends a trigger 1810. The trigger may bedata or a null packet if there is no upstream traffic. The console mayacknowledge the trigger 1810 with an ACK 1820. After sending the ACK,the AP will begin to serve the client and will continue to serve theclient during the service period 1830. During the service period 1830,the AP and the client may exchange data and acknowledgements withoutengaging in another contention. The service period 1830 may continueuntil all the uplink and downlink packets have been exchanged betweenthe AP and the client. The first downlink data packet can be a datapacket or a null packet.

FIG. 19 illustrates message traffic associated with a trigger associatedwith a burst. A client is asleep at 1940, wakes up and stays awakeduring 1950, and then goes back to sleep at 1960. When the client wakesup, it contends and, after winning contention, sends trigger 1910. TheAP acknowledges the trigger at 1920. After an SIFS period, the clientmay send data that is acknowledged by the AP. Later, during serviceperiod 1930, the AP will serve the client. The AP may service the clientuntil all the scheduled uplink and downlink packets have been exchangedbetween the AP and the client. During service period 1930, data from theAP to the client may be separated by an ACK from the client. The datamay be separated from the ACK by a value less than the DIFS period oftime.

Contention may negatively impact the performance of wireless networks.Thus, contention may also negatively impact shared, wireless gamingsystems. Contention may lead to collisions and may lead to increasedlatency. Latency is generally unacceptable in real-time gaming scenariosthat have deadline driven traffic. Example methods and apparatus mayreduce contention through packet aggregation across a link. For example,a receiver may send a data packet immediately after sending an ACK,which may allow the receiver turned transmitter to gain access to themedium before another contender. In one embodiment, contention may bereduced by reducing the number of steps in a handshake by, for example,using data as an ACK. In one embodiment, contention may be reduced bysending a data packet after waiting a period of time equal to, forexample, ACK+SIFS. Sending the data packet within an SIFS interval mayallow the data packet to be treated as an ACK, which may reducecontention. In another embodiment, the data packet may be sent withinthe PIFS of the ACK.

In one shared, wireless gaming environment where a console acts as an APand communicates with a number of accessories (e.g., controllers) thatact as clients, contention can be undesirable. Uplink frames travellingfrom the accessories to the console may delay the transmission ofdownlink frames from the console to the accessories. Using data as anACK (DACK) may reduce contention and thus reduce this delay.

In one embodiment, a first station may receive a data frame from asecond station. The first station may then check its outgoing data framebuffer to see whether it has a data frame(s) to send back to the secondstation. If there is a data frame waiting or ready to be sent, the firststation may send out the outgoing data frame in a manner that allows thedata frame to be treated as an ACK by the second station. Using DACKfacilitates reducing a conventional “two-way” handshake in, for example,802.11, into a “one-and-a-half way” handshake. In 802.11, for the AP andclient to send a downlink and uplink data frame respectively, fourtransmissions are required: a downlink data, an uplink ACK, an uplinkdata, and a downlink ACK. By using an uplink DACK, the fourtransmissions can be reduced to three: a downlink ACK, an uplink DACK,and a downlink ACK.

FIG. 20 illustrates DACK where a data packet is sent within the PIFS ofan ACK. A client may send data 2010. The AP may then send DACK 2020.DACK 2020 may be an acknowledgement and data or may be anacknowledgement followed very quickly by data. The client may thenrespond to the DACK 2020 with an ACK 2030.

FIG. 21 illustrates another example of DACK. In FIG. 21, during bursttime 2110, a client sends a trigger packet 2130 that the APacknowledges. The NAV 2120 has been manipulated to accommodate thereality that the AP cannot instantaneously send data. The NAV 2120 hasbeen lengthened so that DataB 2134 can be transmitted after the APturnaround delay without the client losing the channel to anothercontending client. Note that the NAV starts at the end of a packet.

A client sends a trigger 2130. The AP acknowledges the trigger 2130 withACK 2132. After the AP turnaround delay, the AP sends DataB 2134. Theclient acknowledges the DataB 2134 with ACK 2136. The AP does not thenhave to experience the entire AP turnaround delay because multipleframes may have been acquired during the AP turnaround delay. Therefore,after just the SIFS, the AP may send DataC 2138 which is acknowledged byACK 2140. Since the client and the AP may engage in a bi-directionalexchange, after a client turnaround delay, the client may send DataD2142, which the AP acknowledges with ACK 2144. The client may then,after just the SIFS delay, send DataE 2146 which is acknowledged by ACK2148. Since data can be sent after waiting just the SIFS, the data canserve as an ACK.

FIG. 22 illustrates a gap 2230 in conventional message exchanges where asecond client may contend during an exchange between a first client andthe AP and thereby disrupt the message exchange. In real-time gaming,traffic between an AP and a client may be bi-directional. In a shared,wireless gaming environment, performance may be improved if an AP canimmediately send a downlink packet in response to uplink traffic.Similarly, performance may also be improved if a client can immediatelysend an uplink packet in response to downlink traffic. However, it maydifficult, if even possible at all, for either a client or an AP to sendpackets “immediately” after receiving packets. Instead, an AP or clientmay experience a turnaround delay before being able to respond totraffic.

For example, a client may send data 2210 that is acknowledged by ACK2212. Before the AP can send data 2214, there may be a gap 2230.Conventionally, other clients or devices may attempt to transmit duringthe gap 2230 produced by the turnaround delay since, from their point ofview, which includes carrier sensing, the medium is not being usedduring the turnaround delay. If a competing client is able to acquirethe medium during the gap 2230 produced by the turnaround delay, thenthe bidirectional semantics may be broken, leading to compromised gameplay. Example apparatus and methods may prevent gap jumping byreconfiguring the NAV or by having clients sense the medium for a longertime when they wake up. By preventing gap jumping, the AP may send data2214, which is acknowledged by ACK 2216 and then the client may senddata 2218 which is acknowledged by ACK 2220. A bi-directional exchangecan be performed in service period 2240 because other clients did nottry to jump in during gap 2230.

Example methods and apparatus may manipulate the Network AllocationVector (NAV) in, for example, the Duration ID of the received frame. TheNAV may be set to a value that may prevent other clients in the networkfrom sending packets during the turnaround delay. For example, the NAVmay over-provision the duration ID of the frame to account for theturnaround time at the receiving node.

Over-provisioning the duration ID may resolve one issue, but mayintroduce a second issue. For example, another node that is not part ofthe message exchange may be asleep and miss the NAV. This other node maywake up and try to contend and acquire the medium. To prevent thisscenario, nodes may be configured to sense the medium for a longerperiod of time or to contend for a longer period of time. The longerperiod of time may be selected as a function of the turnaround delay andmay be configured to prevent the other node from trying to acquire themedium during a period of time associated with the turnaround delay.Additionally, example methods and apparatus may handle missed NAVpackets by having clients sleep for longer periods of time.

In one embodiment, devices (e.g., console, accessory) may have multipleframe queues configured with different contention parameters. Themultiple frame queues and different contention parameters may allowdevices to handle packets in the beginning or ending of a burst. Thisfacilitates reducing turnaround time at a device by allowing a receivingdevice to de-queue an outgoing packet in a fastest-available approach.Additionally, example methods and apparatus may be configured to have areceiving device start de-queuing an outgoing packet as soon aspossible. For example, a receiving device may be configured to startde-queuing an outgoing packet as soon as the MAC header is decoded in anincoming packet, or when the first frame is decoded in an aggregatedpacket, or at other times.

FIG. 23 illustrates frame timing. In one embodiment, the burst intervalmay be set to 8 ms. Thus, a client may send a trigger burst once every 8ms to initiate the exchange of upstream and downstream packets. However,the 8 ms may be changed. Regardless of whether the burst interval is setto its default value or to a greater or smaller interval, the frametiming may be contingent on when the trigger packet is successfullydelivered to the AP. The next time at which a trigger packet is to besent by a client can be a function of the successful delivery of thelast trigger packet. The successful delivery can be noted by receipt ofan ACK from the AP.

To reduce upstream controller packet latency, trigger packets may betreated differently by the client. When upstream packets are receivedfrom an application, if the trigger time is more than a pre-definedinterval (e.g., 4 ms) from the packet arrival time, the accessory radiomay transmit the packet at the next pre-defined interval time point. Theaccessory radio may then reset the frame time to this new referencepoint. By sending at a time other than the pre-defined interval, packetlatency may be removed.

In one example, a longer frame time (e.g., 8 ms) is pre-empted by ashorter (e.g., 4 ms) frame time under certain conditions. In the exampleillustrated in FIG. 23, as long as the application is sourcing packetswithin a 4 ms window of the occurrence of the upstream trigger burst,the accessory radio will maintain overall frame timing. However, when apacket arrives at a time outside the window, the accessory radio mayre-time to the next 4 ms interval and exchange the old time point forthe new time point. Once shifted, the new timing may continue. In oneembodiment, if the accessory radio does not have a packet buffered whenit is time to send a trigger packet, the accessory radio may send a Nulldata packet. Time shifting is illustrated in FIG. 23 where a series of 8ms windows end at 2310. While a window ought to have appeared at 2320,the window may be delayed until 2330.

An accessory can decide when it wants to change the frequency of triggerpackets. The accessory can decide to increase or reduce the frequency.FIG. 24 illustrates trigger packet frequency being decreased. Frequencymay also be increased. At time 2410 the trigger frequency may be, forexample 8 ms. At time 2420 the trigger frequency may be decreased to,for example, 16 ms. Then, at time 2430 the trigger frequency may befurther decreased to, for example, 32 ms. Different trigger frequenciesmay be employed.

The radio in an accessory initiates communications with the console.Communication is initiated by sending an upstream trigger packet. Theupstream trigger packet may or may not contain application data. Theconsole radio receives the packet and sends downstream the packets thatare buffered for that accessory. The accessory then sends furtherpackets upstream to the console. This exchange may be referred to as a“burst.” The bursts repeat periodically. The burst interval may bechanged in response to application needs, network traffic, or as afunction of other criteria. For example, when a controller is not beingused for gaming, but is being used for some other activity (e.g.,navigation, controlling video player playback), longer response time maybe acceptable.

The following includes definitions of selected terms employed herein.The definitions include various examples or forms of components thatfall within the scope of a term and that may be used for implementation.The examples are not intended to be limiting. Both singular and pluralforms of terms may be within the definitions.

References to “one embodiment”, “an embodiment”, “one example”, and “anexample” indicate that the embodiment(s) or example(s) so described mayinclude a particular feature, structure, characteristic, property,element, or limitation, but that not every embodiment or examplenecessarily includes that particular feature, structure, characteristic,property, element or limitation. Furthermore, repeated use of the phrase“in one embodiment” does not necessarily refer to the same embodiment,though it may.

“Data store”, as used herein, refers to a physical or logical entitythat can store data. A data store may be, for example, a database, atable, a file, a list, a queue, a heap, a memory, a register, and otherphysical repository. In different examples, a data store may reside inone logical or physical entity or may be distributed between two or morelogical or physical entities.

“Logic”, as used herein, includes but is not limited to hardware,firmware, software in execution on a machine, or combinations of each toperform a function(s) or an action(s), or to cause a function or actionfrom another logic, method, or system. Logic may include a softwarecontrolled microprocessor, a discrete logic (e.g., ASIC), an analogcircuit, a digital circuit, a programmed logic device, a memory devicecontaining instructions, and other physical devices. Logic may includeone or more gates, combinations of gates, or other circuit components.Where multiple logical logics are described, it may be possible toincorporate the multiple logical logics into one physical logic.Similarly, where a single logical logic is described, it may be possibleto distribute that single logical logic between multiple physicallogics.

To the extent that the term “includes” or “including” is employed in thedetailed description or the claims, it is intended to be inclusive in amanner similar to the term “comprising” as that term is interpreted whenemployed as a transitional word in a claim.

To the extent that the term “or” is employed in the detailed descriptionor claims (e.g., A or B) it is intended to mean “A or B or both”. Whenthe Applicant intends to indicate “only A or B but not both” then theterm “only A or B but not both” will be employed. Thus, use of the term“or” herein is the inclusive, and not the exclusive use. See, Bryan A.Garner, A Dictionary of Modern Legal Usage 624 (2d. Ed. 1995).

To the extent that the phrase “one of, A, B, and C” is employed herein,(e.g., a data store configured to store one of, A, B, and C) it isintended to convey the set of possibilities A, B, and C, (e.g., the datastore may store only A, only B, or only C). It is not intended torequire one of A, one of B, and one of C. When the applicants intend toindicate “at least one of A, at least one of B, and at least one of C”,then the phrasing “at least one of A, at least one of B, and at leastone of C” will be employed.

To the extent that the phrase “one or more of, A, B, and C” is employedherein, (e.g., a data store configured to store one or more of, A, B,and C) it is intended to convey the set of possibilities A, B, C, AB,AC, BC, ABC, AA . . . A, BB . . . B, CC . . . C, AA . . . ABB . . . B,AA . . . ACC . . . C, BB . . . BCC . . . C, or AA . . . ABB . . . BCC .. . C (e.g., the data store may store only A, only B, only C, A&B, A&C,B&C, A&B&C, or other combinations thereof including multiple instancesof A, B, or C). It is not intended to require one of A, one of B, andone of C. When the applicants intend to indicate “at least one of A, atleast one of B, and at least one of C”, then the phrasing “at least oneof A, at least one of B, and at least one of C” will be employed.

Although the subject matter has been described in language specific tostructural features or methodological acts, it is to be understood thatthe subject matter defined in the appended claims is not necessarilylimited to the specific features or acts described above. Rather, thespecific features and acts described above are disclosed as exampleforms of implementing the claims.

What is claimed is:
 1. A gaming accessory comprising: a processor; amemory; logic configured to implement a wireless protocol to communicatewith a gaming console in a wireless network; and an interface configuredto connect the processor, the memory, and the logic; the logic beingfurther configured to: contend with one or more other gaming accessoriesfor access to a wireless communication medium for communicating with thegaming console; schedule a sleep time and a subsequent wakeup time forthe gaming accessory; sleep for the scheduled sleep time; and at thesubsequent wakeup time, communicate with the gaming console via thewireless communication medium.
 2. The gaming accessory of claim 1,wherein the logic is further configured to: determine a completion timeof a successful transmission from the gaming accessory to the gamingconsole; and determine the scheduled sleep time and subsequent wake timebased at least on the completion time of the successful transmission. 3.The gaming accessory of claim 1, wherein the logic is further configuredto: determine the scheduled sleep time and subsequent wake time based atleast on an identifier of the gaming accessory.
 4. The gaming accessoryof claim 1, wherein the logic is further configured to: communicate withthe gaming console by sending a single trigger packet to the gamingconsole and receiving two or more downstream packets from the gamingconsole responsive to sending the single trigger packet.
 5. The gamingaccessory of claim 1, wherein the logic is further configured to:communicate with the gaming console by sending a trigger packet to thegaming console and receiving a data packet from the gaming console inresponse to the trigger packet; and interpret the data packet as anacknowledgment of the trigger packet.
 6. The gaming accessory of claim1, the logic comprising one or more discrete hardware logic circuits. 7.A computing device comprising: a processor; and a memory storinginstructions which, when executed by the processor, cause the processorto: contend with one or more other computing devices for access to awireless communication medium for communicating with an access point;determine that contention for the wireless communication medium hassuccessfully completed; perform a first communication with the accesspoint; compute a next slot time for subsequent communication with theaccess point based on at least one of: a time when the firstcommunication successfully completed, or an identifier of the computingdevice; sleep until the next slot time arrives; and upon arrival of thenext slot time, perform a second communication with the access point. 8.The computing device of claim 7, wherein the instructions, when executedby the processor, cause the processor to: compute the next slot time asa function of the identifier of the computing device and a maximumidentifier from other identifiers of the other computing devicescontending for the wireless communication medium.
 9. The computingdevice of claim 7, wherein the instructions, when executed by theprocessor, cause the processor to: compute the next slot time based atleast upon a time when an acknowledgement is received from the accesspoint, the acknowledgement indicating that the first communicationsuccessfully completed.
 10. The computing device of claim 7, wherein theinstructions, when executed by the processor, cause the processor to:send trigger packets to the access point at a specified frequency, thetrigger packets being sent during time slots determined by the computingdevice; and increase the specified frequency at which the triggerpackets are sent.
 11. The computing device of claim 7, wherein theinstructions, when executed by the processor, cause the processor to:send trigger packets to the access point at a specified frequency, thetrigger packets being sent during time slots determined by the computingdevice; and decrease the specified frequency at which the triggerpackets are sent.
 12. The computing device of claim 7, embodied as agaming accessory.
 13. A system comprising the gaming accessory of claim12 and the access point, wherein the access point is a gaming console.14. A method comprising: determining that a client device hassuccessfully contended with other client devices for a wirelesscommunication medium; causing the client device to perform a firstcommunication with an access point over the wireless communicationmedium; causing the client device to compute a next slot time forsubsequent communication with the access point based on at least one of:a time when the first communication successfully completed, or anidentifier of the client device; causing the client device to sleepuntil the next slot time arrives; and causing the client device to, uponarrival of the next slot time, perform a second communication with theaccess point.
 15. The method of claim 14, performed entirely by theclient device.
 16. The method of claim 14, further comprising: causingthe client device to collect utilization data reflecting an amount ofair time used by the client device.
 17. The method of claim 16, furthercomprising: selecting a channel for the client device to communicatewith the access point based at least on the utilization data.
 18. Themethod of claim 14, further comprising: collecting utilization data froma plurality of client devices reflecting respective airtime usage of theplurality of client devices; aggregating the utilization data; andsending beacon messages to the plurality of client devices, the beaconmessages reflecting the aggregated utilization data.
 19. The method ofclaim 18, further comprising sending the beacon messages at regularintervals.
 20. The method of claim 18, further comprising: receivingprobe messages from the plurality of client devices, the probe messagesconveying the respective airtime usage; and sending the beacon messagesin response to the probe messages.